using RAG.Application.Dtos;
using RAG.Application.Commands; // This using statement is crucial for ApiResult

namespace RAG.Application.Interfaces;

/// <summary>
/// 知识库服务接口
/// </summary>
public interface IAppKnowledgeBaseService
{
    /// <summary>
    /// 创建知识库
    /// </summary>
    Task<ApiResult> CreateKnowledgeBaseAsync(CreateKnowledgeBaseDto dto);
    
    /// <summary>
    /// 获取知识库列表
    /// </summary>
    Task<ApiResult> GetKnowledgeBasesAsync(Guid userId);
    
    /// <summary>
    /// 获取知识库详情
    /// </summary>
    Task<ApiResult> GetKnowledgeBaseAsync(Guid knowledgeBaseId);
    
    /// <summary>
    /// 更新知识库
    /// </summary>
    Task<ApiResult> UpdateKnowledgeBaseAsync(UpdateKnowledgeBaseDto dto);
    
    /// <summary>
    /// 删除知识库
    /// </summary>
    Task<ApiResult> DeleteKnowledgeBaseAsync(Guid knowledgeBaseId, Guid userId);
    
    /// <summary>
    /// 添加文档到知识库
    /// </summary>
    Task<ApiResult> AddDocumentToKnowledgeBaseAsync(Guid knowledgeBaseId, Guid documentId);
    
    /// <summary>
    /// 从知识库移除文档
    /// </summary>
    Task<ApiResult> RemoveDocumentFromKnowledgeBaseAsync(Guid knowledgeBaseId, Guid documentId);
}
